package com.android.uu.view.HorizontalSlideListView;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.HorizontalScrollView;
import android.widget.ListAdapter;

/**带有侧滑功能的listview中，每个item的布局容器
 * @author GuiyouZhang
 * Date：2015年12月29日 上午11:36:07
 * Email:guiyouzhang@163.com
 */
public class UUHorizontalScrollView extends HorizontalScrollView {

	private UUHorizontalSlideAdapter mAdapter;
	
	public UUHorizontalScrollView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	public UUHorizontalScrollView(Context context, AttributeSet attrs,
			int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		// TODO Auto-generated constructor stub
	}

	public UUHorizontalScrollView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_MOVE:
            // 如果有划出删除按钮的itemView,就让他滑回去并且锁定本次touch操作,解锁会在父组件的dispatchTouchEvent中进行
            if (mAdapter.mScrollView != null) {
            	mAdapter.scrollView(mAdapter.mScrollView, HorizontalScrollView.FOCUS_LEFT);
                mAdapter.mScrollView = null;
                mAdapter.mLockOnTouch = true;
                return true;
            }
            break;
		case MotionEvent.ACTION_UP:
			// 如果滑动了>50个像素,就显示出删除按钮
            if (getScrollX() > 50) {
            	mAdapter.scrollView(this, HorizontalScrollView.FOCUS_RIGHT);
				mAdapter.mScrollView = this;
				return true;
			} else if (getScrollX() > 10) {
                //滑动距离过小时，复位
				mAdapter.scrollView(this, HorizontalScrollView.FOCUS_LEFT);
			}
            //其他情况默认为点击事件
			break;
		}
		return super.onTouchEvent(event);
	}

	public void setAdapter(ListAdapter adapter) {
		mAdapter = (UUHorizontalSlideAdapter) adapter;
	}
}
